#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include <time.h>
#include "Forme.h"
#include "Constantes.h"
#include "Jeu.h"

void JeuInitialise(Jeu & j)
{
    TerInitialise(j.ter);
    FormeInitialise(j.forme, j.ter);
}

Terrain & JeuGetTerrain(Jeu & j)
{
    return j.ter;
}

Case* JeuGetForme(Jeu & j)
{
    return FormeGetPiece(j.forme);
}

const Terrain & JeuGetConstTerrain(const Jeu & j)
{
    return j.ter;
}

const Case* JeuGetConstForme(const Jeu & j)
{
    return FormeGetPiece(j.forme);
}

void JeuActionClavier(Jeu & j, const char touche)
{
    switch(touche)
    {
        case 'g': FormeDeplacerGauche(j.forme, j.ter);
                    break;

        case 'd': FormeDeplacerDroite(j.forme, j.ter);
                    break;

        case 'b': FormeDeplacerBas(j.forme, j.ter);
                    break;

        case 'p': FormePivoter(j.forme);
                    break;
    }
}

void JeuNiveauSuivant (int & compteur,int & compteur1,int & numniveau)
{
    if (compteur1 - compteur >= 5000) /// si le joueur ajoute 5000 pts au score on passe au niveau suivant
    {
        numniveau ++; /// augmentation du niveau
        compteur = compteur1; /// on met le nouveau score dans compteur pour la prochaine comparaison
    }
}

void JeuTestLignePleine (Jeu & j, int compteur)
{
    int nb;
    nb = 0;
    bool complet;
    complet = true;
    int i;
    int k;
    for(k=j.forme.positionXforme+3;k>=j.forme.positionXforme;k--)
    {
        for(i=0;i<j.ter.dimX;i++)
        {
            if(j.ter.ter[i][k] == VIDE)
            complet = false;
        }

        if(complet == true)
        {
            compteur+=100;
            nb = nb +1;
            TerEffaceur(j.ter, k);
        }
    }

    switch(nb)
    {
        case 2 :
        compteur += 100;
        break;

        case 3 :
        compteur += 150;
        break;

        case 4 :
        compteur+=400;
        break;
    }
}

void Jeu (Jeu & j)
{
    ///variable en rapport avec le temps
    clock_t testtemps;
    clock_t tempsprecedent;
    tempsprecedent = clock();
    int tempsenseconde = 2;

    JeuInitialise(j);

    while (!TerTestFinJeu())
    {


        //diverses fonctions ...
        testtemps = clock();
        if (testtemps >= tempsprecedent + tempsenseconde * CLOCKS_PER_SEC )
        {
            FormeDeplacerBas(j.forme, j.ter);
            tempsprecedent = testtemps;
        }
    }
}
